const treeData = require("./treeData")

//层序遍历一颗树
function traverseTreeByLayer(node){
    if(!node){
        return
    }
    const nodeArr = []  //存放树中元素的队列
    nodeArr.push(node)
    for(let i = 0;i < nodeArr.length; i++){
        console.log("node:",nodeArr[i].value)
        if(nodeArr[i].children.length > 0){
            nodeArr.push.apply(nodeArr,nodeArr[i].children)     //可以进行优化，将已经访问过的数据退出列表，减少存储空间
        }
    }
    //此处在forEach内部修改了数组的长度之后，并不会触发遍历
    // nodeArr.forEach(nodeItem=>{
    //     console.log("node:",node.value)
    //     if(nodeItem.children.length>0){
    //         nodeArr.push.apply(nodeArr,nodeItem.children)      //将第二个数组中的内容合并入第一个数组中
    //         console.log(nodeArr)
    //     }
    // })
    
    
}

function testTraverseTreeByLayer(){
    const tree = treeData.getTree()
    traverseTreeByLayer(tree)
}

testTraverseTreeByLayer()